package com.xhsj.user.hr.system.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xhsj.user.hr.system.entity.MenuTree;
import com.xhsj.user.hr.system.entity.TbGlobalMenu;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 菜单权限表 Mapper 接口
 * </p>
 *
 * @author suxl
 * @since 2020-08-27
 */
@Mapper
public interface TbGlobalMenuMapper extends BaseMapper<TbGlobalMenu> {

    /**
     * 通过角色id查询权限列表
     * @param roleIds
     * @return
     */
    Set<TbGlobalMenu> getPermissionByRoleIds(@Param("roleIds") Set<Long> roleIds);


    Set<TbGlobalMenu> getMenuByRoleIds(@Param("roleIds") Set<Long> roleIds);

    // 查询菜单树
    List<MenuTree> findMenuTree();

    // 通过父id查询列表
    IPage<TbGlobalMenu> getListByParentId(Page<TbGlobalMenu> page, @Param("parentId") Long parentId);

    // 查询父ids
    String getParentIdsById(@Param("id") Long id);

    // 通过角色id查询菜单ids
    List<Long> getMenuIdsByRoleId(@Param("id") Long id);

    // 通过id查询菜单
    TbGlobalMenu getById(@Param("id") Serializable id);

    // 删除菜单下所有数据
    void delById(@Param("id") Long id);

    /**
     * 查询所有菜单 包含权限
     * @author 苏小林
     * @date 2020/9/18 13:00
     * @param: roleIds
     * @return: java.util.Set<com.xhsj.user.hr.system.entity.TbGlobalMenu>
     */
    Set<TbGlobalMenu> getAllMenuByRoleIds(@Param("roleIds") Set<Long> roleIds);

    /**
     * 查询相同parentId最大的顺序
     * @author 苏小林
     * @date 2021/5/25 9:57
     * @param: parentId
     * @return: int
     */
    Integer getMaxOrderNumberByParentId(@Param("parentId") Long parentId);
}
